# coding=utf-8
from PIL import Image
import os

image_width = 100
image_height = 128


def fixed_size(file_path, save_path):
    """按照固定尺寸处理图片"""
    im = Image.open(file_path)
    out = im.resize((image_width, image_height), Image.LANCZOS)
    out.save(save_path)


def change_size(root_folder, dest_folder):
    """将指定文件夹下的图片转换为固定尺寸，并保存到对应路径"""
    for root, dirs, files in os.walk(root_folder):
        for file in files:
            if file.lower().endswith(('.jpg', '.jpeg', '.png')):  # 支持的文件格式
                file_path = os.path.join(root, file)  # 输入文件的完整路径

                # 计算保存路径
                relative_path = os.path.relpath(root, root_folder)  # 获取相对路径
                save_dir = os.path.join(dest_folder, relative_path)  # 目标文件夹的路径
                if not os.path.exists(save_dir):  # 创建目标文件夹（如果不存在）
                    os.makedirs(save_dir)

                save_path = os.path.join(save_dir, file)  # 目标文件的完整路径
                fixed_size(file_path, save_path)  # 转换并保存图像

    print('Done')


if __name__ == '__main__':
    input_folder = 'image'  # 输入文件夹（相对路径）
    output_folder = 'image128'  # 输出文件夹（相对路径）

    current_dir = os.path.dirname(os.path.abspath(__file__))  # 获取当前脚本所在目录
    input_folder_path = os.path.join(current_dir, input_folder)  # 输入文件夹的完整路径
    output_folder_path = os.path.join(current_dir, output_folder)  # 输出文件夹的完整路径

    change_size(input_folder_path, output_folder_path)
